#include "os_sys.h"
#include "os_dbg.h"
#include "os_idle.h"

/**
 * 初始化内核数据结构
*/
os_err_t os_sys_init (void) {    
    // 整个初始化过程不允许任何开启中断
    os_plat_init();

#if OS_MEM_ENABLE
    os_mem_init();
#endif

    os_sched_init();

    os_task_idle_init();

#if OS_TIMER_ENABLE
    os_timer_service_init();
#endif

    os_dbg("rtos inited\n");
    os_dbg("version: %s\n", OS_VERSION);
    return OS_ERR_OK;
}

/**
 * 启动操作系统
 */
void os_sys_start (void) {
    os_sched_run_first();

    // 不应该运行到这里
    os_dbg("os_start error, should not get here...\n");
    for (;;) {}
}
